#ifndef __EPSILON_3D__DEVICE_H__
#define __EPSILON_3D__DEVICE_H__

#include "api.h"

#include "../STL.h"
#include <vector>

#include "../strings.h"

class e3dDisplayDevice
{
public:
  const TCHAR* getDeviceID    (void) { return DeviceID;    };
  const TCHAR* getDeviceName  (void) { return DeviceName;  };
  const TCHAR* getMonitorName (void) { return MonitorName; };

//protected:
  void setDeviceID (TCHAR* id) {
    _tcsncpy (DeviceID, id, 32);
  }

  void setDeviceName (TCHAR* name) {
    _tcsncpy (DeviceName, name, 128);
  }

  void setMonitorName (TCHAR* monitor) {
    _tcsncpy (MonitorName, monitor, 128);
  }

  void print (void)
  {
    _tprintf (_T ("Device (%s): %s [%s]\n"), DeviceID, DeviceName, MonitorName);
  }

private:
  TCHAR DeviceID    [32];  ///< Name of Host and Display Number
  TCHAR DeviceName  [128]; ///< Name of Display Device
  TCHAR MonitorName [128]; ///< Name of Attached Monitor

  //int   DeviceNum;
};

typedef std::vector<e3dDisplayDevice> e3dDisplayDevices;

class e3dRenderDevice
{
private:
  TCHAR DeviceName    [256];
  TCHAR DeviceVendor  [256];
  TCHAR DriverVersion [256];

  E3D_RENDER_API SupportedAPIs;
};

#endif /* __EPSILON_3D__DEVICE_H__ */